﻿
#pragma once

#include <learn/ais/ais_object.h>

namespace xi
{

namespace ais
{

class EXT_SYMBOL AIS_PointCloud : public AIS_Object
{
  public:
    AIS_PointCloud(AIS_PointCloud &&) = delete;

    /**
     * @brief 构造函数
     *
     * @param[in] points
     */
    explicit AIS_PointCloud(std::vector<Vec3> &&points);

    /**
     * @brief 获得点云
     *
     * @return const std::vector<Vec3>&
     */
    const std::vector<Vec3> &points() const;

    /**
     * @brief 获得点云
     *
     * @return std::vector<Vec3>&
     */
    std::vector<Vec3> &points();

    /**
     * @brief 初始化消息
     *
     * @param[in] msg
     */
    void visit(AIS_InitMsg *msg) override;

  protected:
    std::vector<Vec3> m_points;
};

} // namespace ais

} // namespace xi
